import pandas as pd
df = pd.read_csv(r'C:\Users\giral\OneDrive\Documentos\Master_Ciencias_de_Datos\Visualizacion\PEC2\imre12327_Supplemental_Material\gf_imr.csv')
df.head()
| stock | demo | sex | year0 | interval | orig | dest | orig_code | dest_code | flow | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | un12 | wpp2010 | b | 1990 | 10 | ABW | ABW | 533 | 533 | 0 |
| 1 | un12 | wpp2010 | b | 1990 | 10 | ABW | AFG | 533 | 4 | 0 |
| 2 | un12 | wpp2010 | b | 1990 | 10 | ABW | AGO | 533 | 24 | 0 |
| 3 | un12 | wpp2010 | b | 1990 | 10 | ABW | ALB | 533 | 8 | 0 |
| 4 | un12 | wpp2010 | b | 1990 | 10 | ABW | ANT | 533 | 530 | 0 |
import numpy as np
# Eliminamos las variables que no nos interesan
df = df.drop('stock', 1)
df = df.drop('demo', 1)
df = df.drop('sex', 1)
df = df.drop('year0', 1)
df = df.drop('interval', 1)
df = df.drop('orig_code', 1)
df = df.drop('dest_code', 1)
df.head()
| orig | dest | flow | |
|---|---|---|---|
| 0 | ABW | ABW | 0 |
| 1 | ABW | AFG | 0 |
| 2 | ABW | AGO | 0 |
| 3 | ABW | ALB | 0 |
| 4 | ABW | ANT | 0 |
df1 = df[df["flow"]!=0] # Filtramos los 0, porque nos interesa que exista flujo
df1 = df1.head(210) # Filtramos 210 registros para visualizarlos
df1.head()
| orig | dest | flow | |
|---|---|---|---|
| 9 | ABW | AUT | 1 |
| 29 | ABW | CAN | 2 |
| 30 | ABW | CHE | 1 |
| 45 | ABW | DEU | 56 |
| 47 | ABW | DNK | 1 |
import holoviews as hv
from holoviews.core import Store
import pandas as pd
hv.ipython.notebook_extension('bokeh')
Store.set_current_backend('bokeh')
renderer = Store.renderers['bokeh']
#df_final = pd.DataFrame({
# 'Sub_Market': ['Central texas', 'Southern California', 'Florida'],
# 'Sport League': ['MLS', 'NBA', 'MLS'],
# 'Revenue': [1.4981211 * 10**5, 2.921212* 10**6, 1.2121112*10**6]
#})
graph = hv.Sankey(
df1, #df_final-->df1
kdims=['orig', 'dest'], # Sub_Market --> orig /// Sport League --> dest
vdims=[hv.Dimension("flow", value_format=str)], # Revenue --> flow
)
renderer = Store.renderers['bokeh']
plot = renderer.get_plot(graph)
offset = -200
num_nodes = len(plot.handles['text_1_source'].data['x'])
plot.handles['text_1_source'].data['x_offset'] = [0]* num_nodes
num_left_nodes = 3
left_nodes_selection = slice(0, num_left_nodes)
plot.handles['text_1_source'].data['x_offset'][left_nodes_selection] = [offset]* num_left_nodes
plot.handles['text_1_glyph'].x_offset = {'field': 'x_offset' }
plot.handles['plot'].x_range.start += (2*offset)
hv.ipython.notebook_extension('bokeh')
data, metadata = hv.ipython.display_hooks.render(plot, fmt='svg')
hv.ipython.display(hv.ipython.HTML(data["text/html"]))